Coverage Report

Created: 2021-08-28 18:14

D:\git\skunkworks\herald-for-cpp\herald\include\herald\analysis\aggregates.h
Line
Count
Source (jump to first uncovered line)
1
//  Copyright 2021 Herald Project Contributors
2
//  SPDX-License-Identifier: Apache-2.0
3
//
4
5
#ifndef HERALD_AGGREGATES_H
6
#define HERALD_AGGREGATES_H
7
8
#include <map>
9
#include <variant>
10
#include <vector>
11
// #include <iostream>
12
13
#include "ranges.h"
14
15
namespace herald {
16
namespace analysis {
17
namespace aggregates {
18
19
struct Count {
20
  static constexpr int runs = 1;
21
22
9
  Count() : count(0) {}
23
  ~Count() = default;
24
25
18
  void beginRun(int thisRun) { // 1 indexed
26
18
    run = thisRun;
27
18
  }
28
29
  template <typename ValT>
30
46
  void map(ValT value) {
31
46
    if (run > 1) 
return23
; // performance enhancement
32
23
33
23
    ++count;
34
23
  }
35
36
9
  double reduce() {
37
9
    return count;
38
9
  }
39
40
0
  void reset() {
41
0
    count = 0;
42
0
  }
43
44
private:
45
  int count;
46
  int run;
47
};
48
49
struct Mean {
50
  static constexpr int runs = 1;
51
52
3
  Mean() : count(0), run(1), sum(0.0) {}
53
  ~Mean() = default;
54
55
6
  void beginRun(int thisRun) { // 1 indexed
56
6
    run = thisRun;
57
6
  }
58
59
  template <typename ValT>
60
20
  void map(ValT value) {
61
20
    if (run > 1) 
return10
; // performance enhancement
62
10
63
10
    sum += (double)value;
64
10
    ++count;
65
10
  }
66
67
3
  double reduce() {
68
3
    return sum / count;
69
3
  }
70
71
0
  void reset() {
72
0
    count = 0;
73
0
    sum = 0.0;
74
0
  }
75
76
private:
77
  int count;
78
  int run;
79
  double sum;
80
};
81
82
struct Mode {
83
  static constexpr int runs = 1;
84
  
85
26
  Mode() : run(1), counts() {}
86
117
  ~Mode() = default;
87
88
34
  void beginRun(int thisRun) { // 1 indexed
89
34
    run = thisRun;
90
34
  }
91
92
  template <typename ValT>
93
110
  void map(ValT value) {
94
110
    if (run > 1) 
return33
; // performance enhancement
95
77
96
77
    double dv = (double)value;
97
77
    auto ptr = counts.find(dv);
98
77
    if (counts.end() == ptr) {
99
30
      counts.emplace(dv,1);
100
47
    } else {
101
47
      ++(ptr->second);
102
47
    }
103
77
  }
104
105
21
  double reduce() {
106
21
    // loop through map once and find largest
107
21
    double largest = 0;
108
21
    int largestCount = 0;
109
51
    for (auto iter = counts.begin();iter != counts.end();
++iter30
) {
110
30
      if (iter->second > largestCount) {
111
20
        largestCount = iter->second;
112
20
        largest = iter->first;
113
20
      }
114
30
    }
115
21
    return largest;
116
21
  }
117
118
9
  void reset() {
119
9
    counts.clear();
120
9
  }
121
122
private:
123
  int run;
124
  std::map<double,int> counts; // value converted to double, and int count for each
125
};
126
127
struct Variance {
128
  static constexpr int runs = 2;
129
130
12
  Variance() : count(0), run(1), sum(0.0), mean(0.0) {}
131
  ~Variance() = default;
132
133
24
  void beginRun(int thisRun) { // 1 indexed
134
24
    run = thisRun;
135
24
    if (2 == run) {
136
12
      // initialise mean
137
12
      mean = sum / count;
138
12
      // reinitialise counters
139
12
      sum = 0.0;
140
12
      count = 0;
141
12
    }
142
24
  }
143
144
  template <typename ValT>
145
66
  void map(ValT value) {
146
66
    double dv = (double)value;
147
66
    if (1 == run) {
148
33
      sum += dv;
149
33
    } else {
150
33
      // 2 === run
151
33
      sum += (dv - mean)*(dv - mean);
152
33
    }
153
66
    ++count;
154
66
  }
155
156
11
  double reduce() {
157
11
    if (count < 1) {
158
0
      return 0.0; // div by zero check
159
0
    }
160
11
    return sum / (count - 1); // Sample variance
161
11
  }
162
163
0
  void reset() {
164
0
    count = 0;
165
0
    run = 1;
166
0
    sum = 0.0;
167
0
    mean = 0.0;
168
0
  }
169
170
private:
171
  int count;
172
  int run;
173
  double sum;
174
  double mean;
175
};
176
177
178
struct Median {
179
  static constexpr int runs = 1;
180
181
0
  Median() : run(1), minNextPos(0), maxNextPos(0), minHeap(), maxHeap() {}
182
  ~Median() = default;
183
184
0
  void beginRun(int thisRun) {
185
0
    run = thisRun;
186
0
  }
187
188
  template <typename ValT>
189
  void map(ValT value) {
190
    if (run > 1) {
191
      return;
192
    }
193
    double dv = (double)value;
194
    if (minNextPos == maxNextPos) {
195
      if (10 == maxNextPos) {
196
        removeLeast(maxHeap,maxNextPos);
197
      }
198
      maxHeap[maxNextPos++] = dv;
199
      if (10 == minNextPos) {
200
        removeMost(minHeap,minNextPos);
201
      }
202
      minHeap[minNextPos++] = maxHeap[leastIndex(maxHeap,maxNextPos)];
203
    } else {
204
      if (10 == minNextPos) {
205
        removeMost(minHeap,minNextPos);
206
      }
207
      minHeap[minNextPos++] = dv;
208
      if (10 == maxNextPos) {
209
        removeLeast(maxHeap,maxNextPos);
210
      }
211
      maxHeap[maxNextPos++] = minHeap[mostIndex(minHeap,minNextPos)];
212
    }
213
  }
214
215
0
  double reduce() {
216
0
    if (0 == minNextPos && 0 == maxNextPos) {
217
0
      return 0.0; // empty data check
218
0
    }
219
0
    if (minNextPos > maxNextPos) {
220
0
      return minHeap[leastIndex(minHeap,minNextPos)];
221
0
    }
222
0
    return (minHeap[leastIndex(minHeap,minNextPos)] + maxHeap[mostIndex(maxHeap,maxNextPos)]) / 2.0;
223
0
  }
224
225
0
  void reset() {
226
0
    run = 1;
227
0
    minNextPos = 0;
228
0
    maxNextPos = 0;
229
0
  }
230
231
232
private:
233
  int run;
234
  int minNextPos;
235
  int maxNextPos;
236
  std::array<double,10> minHeap;
237
  std::array<double,10> maxHeap;
238
239
0
  int leastIndex(const std::array<double,10>& from, const int fromNextPos) const {
240
0
    int leastIdx = 0;
241
0
    double least = from[0];
242
0
    for (int i = 1;i < fromNextPos;++i) {
243
0
      if (from[i] < least) {
244
0
        least = from[i];
245
0
        leastIdx = i;
246
0
      }
247
0
    }
248
0
    return leastIdx;
249
0
  }
250
251
0
  int mostIndex(const std::array<double,10>& from, const int fromNextPos) const {
252
0
    int mostIdx = 0;
253
0
    double most = from[0];
254
0
    for (int i = 1;i < fromNextPos;++i) {
255
0
      if (from[i] > most) {
256
0
        most = from[i];
257
0
        mostIdx = i;
258
0
      }
259
0
    }
260
0
    return mostIdx;
261
0
  }
262
263
0
  void removeMost(std::array<double,10>& from, int& fromNextPos) {
264
0
    int mostIdx = mostIndex(from,fromNextPos);
265
0
    for (int i = mostIdx; i < fromNextPos - 1;++i) {
266
0
      from[i] = from[i + 1];
267
0
    }
268
0
    --fromNextPos;
269
0
  }
270
271
0
  void removeLeast(std::array<double,10>& from, int& fromNextPos) {
272
0
    int leastIdx = leastIndex(from,fromNextPos);
273
0
    for (int i = leastIdx; i < fromNextPos - 1;++i) {
274
0
      from[i] = from[i + 1];
275
0
    }
276
0
    --fromNextPos;
277
0
  }
278
};
279
280
281
/// Gaussian
282
struct Gaussian {
283
  static constexpr int runs = 1;
284
285
3
  Gaussian() : run(1), distribution() {}
286
  ~Gaussian() = default;
287
288
0
  void beginRun(int thisRun) {
289
0
    run = thisRun;
290
0
  }
291
292
  template <typename ValT>
293
11
  void map(ValT value) {
294
11
    if (run > 1) {
295
0
      return;
296
0
    }
297
11
    double dv = (double)value;
298
11
    distribution.add(dv);
299
11
  }
??$map@U?$Sample@C@sampling@analysis@herald@@@Gaussian@aggregates@analysis@herald@@QEAAXU?$Sample@C@sampling@23@@Z
Line
Count
Source
293
10
  void map(ValT value) {
294
10
    if (run > 1) {
295
0
      return;
296
0
    }
297
10
    double dv = (double)value;
298
10
    distribution.add(dv);
299
10
  }
??$map@U?$Sample@H@sampling@analysis@herald@@@Gaussian@aggregates@analysis@herald@@QEAAXU?$Sample@H@sampling@23@@Z
Line
Count
Source
293
1
  void map(ValT value) {
294
1
    if (run > 1) {
295
0
      return;
296
0
    }
297
1
    double dv = (double)value;
298
1
    distribution.add(dv);
299
1
  }
300
301
13
  double reduce() {
302
13
    return distribution.mean();
303
13
  }
304
305
1
  void reset() {
306
1
    run = 1;
307
1
    distribution.reset();
308
1
  }
309
310
9
  const Distribution& model() const {
311
9
    return distribution;
312
9
  }
313
314
private:
315
  int run;
316
  Distribution distribution;
317
};
318
319
320
321
322
323
/// A Variadic aggregation function requiring aggregations to be prior initialised (i.e. configured)
324
325
template <typename... Aggs>
326
struct aggregate {
327
11
  aggregate(Aggs... configuredAggregates) : aggregates() {
328
11
    addAggregate<Aggs...>(configuredAggregates...);
329
11
  }
??0?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@aggregates@analysis@herald@@QEAA@UFowlerBasic@distance@algorithms@23@@Z
Line
Count
Source
327
10
  aggregate(Aggs... configuredAggregates) : aggregates() {
328
10
    addAggregate<Aggs...>(configuredAggregates...);
329
10
  }
??0?$aggregate@URiskAggregationBasic@risk@algorithms@analysis@herald@@@aggregates@analysis@herald@@QEAA@URiskAggregationBasic@risk@algorithms@23@@Z
Line
Count
Source
327
1
  aggregate(Aggs... configuredAggregates) : aggregates() {
328
1
    addAggregate<Aggs...>(configuredAggregates...);
329
1
  }
330
42
  ~aggregate() = default;
??1?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@aggregates@analysis@herald@@QEAA@XZ
Line
Count
Source
330
20
  ~aggregate() = default;
??1?$aggregate@URiskAggregationBasic@risk@algorithms@analysis@herald@@@aggregates@analysis@herald@@QEAA@XZ
Line
Count
Source
330
22
  ~aggregate() = default;
331
  
332
  template <typename SampleListT,
333
            typename SampleT = typename std::remove_cv<typename SampleListT::value_type>::type,
334
            typename ValT = typename std::remove_cv<typename SampleT::value_type>::type,
335
            std::size_t MaxSize = SampleListT::max_size
336
           >
337
11
  friend auto operator|(SampleListT& from, aggregate<Aggs...> me) -> aggregate<Aggs...> {
338
11
    // determine number of runs
339
11
    int maxRuns = 1;
340
11
    for (auto& agg : me.aggregates) {
341
11
      std::visit([&maxRuns](auto&& arg) {
342
11
        if (arg.runs > maxRuns) {
343
0
          maxRuns = arg.runs;
344
0
        }
345
11
      }, agg);
346
11
    }
347
11
348
11
    // loop over all incoming data, calling each aggregate each time
349
22
    for (int run = 1;run <= maxRuns;
run++11
) {
350
11
      for (auto& agg : me.aggregates) {
351
11
        std::visit([&run](auto&& arg) {
352
11
          arg.beginRun(run);
353
11
          // std::cout << "Beggining run " << run << std::endl;
354
11
        }, agg);
355
11
      }
356
11
357
19
      for (auto& v : from) {
358
19
        for (auto& agg : me.aggregates) {
359
19
          std::visit([&v](auto&& arg) {
360
19
            // std::cout << "Sample taken: " << v.taken.secondsSinceUnixEpoch() << std::endl;
361
19
            arg.map(v);
362
19
          }, agg);
363
19
        }
364
19
      }
365
11
    }
366
11
367
11
    // return me so we can then do get<Agg>()
368
11
    return me;
369
11
  }
370
  
371
  template <typename Coll, typename Pred>
372
10
  friend auto operator|(herald::analysis::views::filtered_iterator_proxy<Coll,Pred> from, aggregate<Aggs...> me) -> aggregate<Aggs...> {
373
10
    // determine number of runs
374
10
    int maxRuns = 1;
375
10
    for (auto& agg : me.aggregates) {
376
10
      std::visit([&maxRuns](auto&& arg) {
377
10
        if (arg.runs > maxRuns) {
378
0
          maxRuns = arg.runs;
379
0
        }
380
10
      }, agg);
??$?RAEAUFowlerBasic@distance@algorithms@analysis@herald@@@<lambda_1>@?0???$?UU?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@analysis@herald@@U?$in_range@N@234@@views@23@@aggregates@analysis@herald@@YA?AU?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@123@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@analysis@herald@@U?$in_range@N@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUFowlerBasic@distance@algorithms@23@@Z
Line
Count
Source
376
2
      std::visit([&maxRuns](auto&& arg) {
377
2
        if (arg.runs > maxRuns) {
378
0
          maxRuns = arg.runs;
379
0
        }
380
2
      }, agg);
??$?RAEAUFowlerBasic@distance@algorithms@analysis@herald@@@<lambda_1>@?0???$?UU?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$in_range@N@234@@views@23@@aggregates@analysis@herald@@YA?AU?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@123@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$in_range@N@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUFowlerBasic@distance@algorithms@23@@Z
Line
Count
Source
376
8
      std::visit([&maxRuns](auto&& arg) {
377
8
        if (arg.runs > maxRuns) {
378
0
          maxRuns = arg.runs;
379
0
        }
380
8
      }, agg);
381
10
    }
382
10
383
10
    // loop over all incoming data, calling each aggregate each time
384
20
    for (int run = 1;run <= maxRuns;
run++10
) {
385
10
      for (auto& agg : me.aggregates) {
386
10
        std::visit([&run](auto&& arg) {
387
10
          arg.beginRun(run);
388
10
          // std::cout << "Beggining run " << run << std::endl;
389
10
        }, agg);
??$?RAEAUFowlerBasic@distance@algorithms@analysis@herald@@@<lambda_2>@?0???$?UU?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@analysis@herald@@U?$in_range@N@234@@views@23@@aggregates@analysis@herald@@YA?AU?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@123@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@analysis@herald@@U?$in_range@N@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUFowlerBasic@distance@algorithms@23@@Z
Line
Count
Source
386
2
        std::visit([&run](auto&& arg) {
387
2
          arg.beginRun(run);
388
2
          // std::cout << "Beggining run " << run << std::endl;
389
2
        }, agg);
??$?RAEAUFowlerBasic@distance@algorithms@analysis@herald@@@<lambda_2>@?0???$?UU?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$in_range@N@234@@views@23@@aggregates@analysis@herald@@YA?AU?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@123@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$in_range@N@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUFowlerBasic@distance@algorithms@23@@Z
Line
Count
Source
386
8
        std::visit([&run](auto&& arg) {
387
8
          arg.beginRun(run);
388
8
          // std::cout << "Beggining run " << run << std::endl;
389
8
        }, agg);
390
10
      }
391
10
392
54
      while (!from.ended()) {
393
44
        auto& v = *from;
394
44
        for (auto& agg : me.aggregates) {
395
44
          std::visit([&v](auto&& arg) {
396
44
            // std::cout << "Sample taken: " << v.taken.secondsSinceUnixEpoch() << std::endl;
397
44
            arg.map(v);
398
44
          }, agg);
??$?RAEAUFowlerBasic@distance@algorithms@analysis@herald@@@<lambda_3>@?0???$?UU?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@analysis@herald@@U?$in_range@N@234@@views@23@@aggregates@analysis@herald@@YA?AU?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@123@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@analysis@herald@@U?$in_range@N@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUFowlerBasic@distance@algorithms@23@@Z
Line
Count
Source
395
6
          std::visit([&v](auto&& arg) {
396
6
            // std::cout << "Sample taken: " << v.taken.secondsSinceUnixEpoch() << std::endl;
397
6
            arg.map(v);
398
6
          }, agg);
??$?RAEAUFowlerBasic@distance@algorithms@analysis@herald@@@<lambda_3>@?0???$?UU?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$in_range@N@234@@views@23@@aggregates@analysis@herald@@YA?AU?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@123@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$in_range@N@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUFowlerBasic@distance@algorithms@23@@Z
Line
Count
Source
395
38
          std::visit([&v](auto&& arg) {
396
38
            // std::cout << "Sample taken: " << v.taken.secondsSinceUnixEpoch() << std::endl;
397
38
            arg.map(v);
398
38
          }, agg);
399
44
        }
400
44
        ++from;
401
44
      }
402
10
    }
403
10
404
10
    // return me so we can then do get<Agg>()
405
10
    return me;
406
10
  }
??$?UU?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@analysis@herald@@U?$in_range@N@234@@views@23@@aggregates@analysis@herald@@YA?AU?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@012@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@analysis@herald@@U?$in_range@N@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@12@U3012@@Z
Line
Count
Source
372
2
  friend auto operator|(herald::analysis::views::filtered_iterator_proxy<Coll,Pred> from, aggregate<Aggs...> me) -> aggregate<Aggs...> {
373
2
    // determine number of runs
374
2
    int maxRuns = 1;
375
2
    for (auto& agg : me.aggregates) {
376
2
      std::visit([&maxRuns](auto&& arg) {
377
2
        if (arg.runs > maxRuns) {
378
2
          maxRuns = arg.runs;
379
2
        }
380
2
      }, agg);
381
2
    }
382
2
383
2
    // loop over all incoming data, calling each aggregate each time
384
4
    for (int run = 1;run <= maxRuns;
run++2
) {
385
2
      for (auto& agg : me.aggregates) {
386
2
        std::visit([&run](auto&& arg) {
387
2
          arg.beginRun(run);
388
2
          // std::cout << "Beggining run " << run << std::endl;
389
2
        }, agg);
390
2
      }
391
2
392
8
      while (!from.ended()) {
393
6
        auto& v = *from;
394
6
        for (auto& agg : me.aggregates) {
395
6
          std::visit([&v](auto&& arg) {
396
6
            // std::cout << "Sample taken: " << v.taken.secondsSinceUnixEpoch() << std::endl;
397
6
            arg.map(v);
398
6
          }, agg);
399
6
        }
400
6
        ++from;
401
6
      }
402
2
    }
403
2
404
2
    // return me so we can then do get<Agg>()
405
2
    return me;
406
2
  }
??$?UU?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$in_range@N@234@@views@23@@aggregates@analysis@herald@@YA?AU?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@012@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$in_range@N@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@12@U3012@@Z
Line
Count
Source
372
8
  friend auto operator|(herald::analysis::views::filtered_iterator_proxy<Coll,Pred> from, aggregate<Aggs...> me) -> aggregate<Aggs...> {
373
8
    // determine number of runs
374
8
    int maxRuns = 1;
375
8
    for (auto& agg : me.aggregates) {
376
8
      std::visit([&maxRuns](auto&& arg) {
377
8
        if (arg.runs > maxRuns) {
378
8
          maxRuns = arg.runs;
379
8
        }
380
8
      }, agg);
381
8
    }
382
8
383
8
    // loop over all incoming data, calling each aggregate each time
384
16
    for (int run = 1;run <= maxRuns;
run++8
) {
385
8
      for (auto& agg : me.aggregates) {
386
8
        std::visit([&run](auto&& arg) {
387
8
          arg.beginRun(run);
388
8
          // std::cout << "Beggining run " << run << std::endl;
389
8
        }, agg);
390
8
      }
391
8
392
46
      while (!from.ended()) {
393
38
        auto& v = *from;
394
38
        for (auto& agg : me.aggregates) {
395
38
          std::visit([&v](auto&& arg) {
396
38
            // std::cout << "Sample taken: " << v.taken.secondsSinceUnixEpoch() << std::endl;
397
38
            arg.map(v);
398
38
          }, agg);
399
38
        }
400
38
        ++from;
401
38
      }
402
8
    }
403
8
404
8
    // return me so we can then do get<Agg>()
405
8
    return me;
406
8
  }
407
408
  template <typename ValT>
409
  friend auto operator|(herald::analysis::views::view<ValT> from, aggregate<Aggs...> me) -> aggregate<Aggs...> {
410
    // determine number of runs
411
    int maxRuns = 1;
412
    for (auto& agg : me.aggregates) {
413
      std::visit([&maxRuns](auto&& arg) {
414
        if (arg.runs > maxRuns) {
415
          maxRuns = arg.runs;
416
        }
417
      }, agg);
418
    }
419
420
    // loop over all incoming data, calling each aggregate each time
421
    for (int run = 1;run <= maxRuns;run++) {
422
      for (auto& agg : me.aggregates) {
423
        std::visit([&run](auto&& arg) {
424
          arg.beginRun(run);
425
          // std::cout << "Beggining run " << run << std::endl;
426
        }, agg);
427
      }
428
429
      for (auto& v : from) {
430
        for (auto& agg : me.aggregates) {
431
          std::visit([&v](auto&& arg) {
432
            // std::cout << "Sample taken: " << v.taken.secondsSinceUnixEpoch() << std::endl;
433
            arg.map(v);
434
          }, agg);
435
        }
436
      }
437
    }
438
439
    // return me so we can then do get<Agg>()
440
    return me;
441
  }
442
443
  template <typename Agg>
444
21
  Agg& get() {
445
21
    Agg& retval = std::get<0>(aggregates.front());
446
21
    for (auto& agg : aggregates) {
447
21
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
448
21
      std::visit([&retval](auto&& arg) {
449
21
        using T = std::decay_t<decltype(arg)>;
450
21
        if constexpr (std::is_same_v<Agg,T>) {
451
21
          retval = arg;
452
21
        }
453
21
      }, agg);
??$?RAEAUFowlerBasic@distance@algorithms@analysis@herald@@@<lambda_1>@?0???$get@UFowlerBasic@distance@algorithms@analysis@herald@@@?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@aggregates@analysis@herald@@QEAAAEAUFowlerBasic@distance@algorithms@34@XZ@QEBA?A?<auto>@@AEAU56734@@Z
Line
Count
Source
448
10
      std::visit([&retval](auto&& arg) {
449
10
        using T = std::decay_t<decltype(arg)>;
450
10
        if constexpr (std::is_same_v<Agg,T>) {
451
10
          retval = arg;
452
10
        }
453
10
      }, agg);
??$?RAEAURiskAggregationBasic@risk@algorithms@analysis@herald@@@<lambda_1>@?0???$get@URiskAggregationBasic@risk@algorithms@analysis@herald@@@?$aggregate@URiskAggregationBasic@risk@algorithms@analysis@herald@@@aggregates@analysis@herald@@QEAAAEAURiskAggregationBasic@risk@algorithms@34@XZ@QEBA?A?<auto>@@AEAU56734@@Z
Line
Count
Source
448
11
      std::visit([&retval](auto&& arg) {
449
11
        using T = std::decay_t<decltype(arg)>;
450
11
        if constexpr (std::is_same_v<Agg,T>) {
451
11
          retval = arg;
452
11
        }
453
11
      }, agg);
454
21
    }
455
21
    return retval;
456
21
  }
??$get@UFowlerBasic@distance@algorithms@analysis@herald@@@?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@aggregates@analysis@herald@@QEAAAEAUFowlerBasic@distance@algorithms@23@XZ
Line
Count
Source
444
10
  Agg& get() {
445
10
    Agg& retval = std::get<0>(aggregates.front());
446
10
    for (auto& agg : aggregates) {
447
10
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
448
10
      std::visit([&retval](auto&& arg) {
449
10
        using T = std::decay_t<decltype(arg)>;
450
10
        if constexpr (std::is_same_v<Agg,T>) {
451
10
          retval = arg;
452
10
        }
453
10
      }, agg);
454
10
    }
455
10
    return retval;
456
10
  }
??$get@URiskAggregationBasic@risk@algorithms@analysis@herald@@@?$aggregate@URiskAggregationBasic@risk@algorithms@analysis@herald@@@aggregates@analysis@herald@@QEAAAEAURiskAggregationBasic@risk@algorithms@23@XZ
Line
Count
Source
444
11
  Agg& get() {
445
11
    Agg& retval = std::get<0>(aggregates.front());
446
11
    for (auto& agg : aggregates) {
447
11
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
448
11
      std::visit([&retval](auto&& arg) {
449
11
        using T = std::decay_t<decltype(arg)>;
450
11
        if constexpr (std::is_same_v<Agg,T>) {
451
11
          retval = arg;
452
11
        }
453
11
      }, agg);
454
11
    }
455
11
    return retval;
456
11
  }
457
458
private:
459
  std::vector<std::variant<Aggs...>> aggregates;
460
461
  template <typename Last>
462
11
  void addAggregate(Last last) {
463
11
    aggregates.emplace_back(std::move(last));
464
11
  }
??$addAggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@?$aggregate@UFowlerBasic@distance@algorithms@analysis@herald@@@aggregates@analysis@herald@@AEAAXUFowlerBasic@distance@algorithms@23@@Z
Line
Count
Source
462
10
  void addAggregate(Last last) {
463
10
    aggregates.emplace_back(std::move(last));
464
10
  }
??$addAggregate@URiskAggregationBasic@risk@algorithms@analysis@herald@@@?$aggregate@URiskAggregationBasic@risk@algorithms@analysis@herald@@@aggregates@analysis@herald@@AEAAXURiskAggregationBasic@risk@algorithms@23@@Z
Line
Count
Source
462
1
  void addAggregate(Last last) {
463
1
    aggregates.emplace_back(std::move(last));
464
1
  }
465
466
  template <typename First, typename Second, typename... Remaining>
467
  void addAggregate(First first, Second second, Remaining... remaining) {
468
    aggregates.emplace_back(std::move(first));
469
    addAggregate<Second, Remaining...>(second, remaining...);
470
  }
471
};
472
473
474
475
476
477
478
479
480
/// A specialised aggregation that doesn't require pre-defining or
481
/// parameterising the aggregation classes being used.
482
/// This is a convenience version of aggregate
483
template <typename... Aggs>
484
struct summarise {
485
12
  summarise() : aggregates() {
486
12
    // Initialise members of aggregates, one per aggregate type requested
487
12
    addAggregate<Aggs...>();
488
12
  }
??0?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAA@XZ
Line
Count
Source
485
3
  summarise() : aggregates() {
486
3
    // Initialise members of aggregates, one per aggregate type requested
487
3
    addAggregate<Aggs...>();
488
3
  }
??0?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAA@XZ
Line
Count
Source
485
9
  summarise() : aggregates() {
486
9
    // Initialise members of aggregates, one per aggregate type requested
487
9
    addAggregate<Aggs...>();
488
9
  }
489
24
  ~summarise() = default;
??1?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAA@XZ
Line
Count
Source
489
6
  ~summarise() = default;
??1?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAA@XZ
Line
Count
Source
489
18
  ~summarise() = default;
490
491
  template <typename ValT>
492
12
  friend auto operator|(herald::analysis::views::view<ValT>& from, summarise<Aggs...> me) -> summarise<Aggs...> {
493
12
    // determine number of runs
494
12
    int maxRuns = 1;
495
36
    for (auto& agg : me.aggregates) {
496
36
      std::visit([&maxRuns](auto&& arg) {
497
36
        if (arg.runs > maxRuns) {
498
12
          maxRuns = arg.runs;
499
12
        }
500
36
      }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMean@123@@Z
Line
Count
Source
496
1
      std::visit([&maxRuns](auto&& arg) {
497
1
        if (arg.runs > maxRuns) {
498
0
          maxRuns = arg.runs;
499
0
        }
500
1
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
496
1
      std::visit([&maxRuns](auto&& arg) {
497
1
        if (arg.runs > maxRuns) {
498
0
          maxRuns = arg.runs;
499
0
        }
500
1
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
496
1
      std::visit([&maxRuns](auto&& arg) {
497
1
        if (arg.runs > maxRuns) {
498
1
          maxRuns = arg.runs;
499
1
        }
500
1
      }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMean@123@@Z
Line
Count
Source
496
2
      std::visit([&maxRuns](auto&& arg) {
497
2
        if (arg.runs > maxRuns) {
498
0
          maxRuns = arg.runs;
499
0
        }
500
2
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
496
2
      std::visit([&maxRuns](auto&& arg) {
497
2
        if (arg.runs > maxRuns) {
498
0
          maxRuns = arg.runs;
499
0
        }
500
2
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
496
2
      std::visit([&maxRuns](auto&& arg) {
497
2
        if (arg.runs > maxRuns) {
498
2
          maxRuns = arg.runs;
499
2
        }
500
2
      }, agg);
??$?RAEAUCount@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUCount@123@@Z
Line
Count
Source
496
9
      std::visit([&maxRuns](auto&& arg) {
497
9
        if (arg.runs > maxRuns) {
498
0
          maxRuns = arg.runs;
499
0
        }
500
9
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
496
9
      std::visit([&maxRuns](auto&& arg) {
497
9
        if (arg.runs > maxRuns) {
498
0
          maxRuns = arg.runs;
499
0
        }
500
9
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
496
9
      std::visit([&maxRuns](auto&& arg) {
497
9
        if (arg.runs > maxRuns) {
498
9
          maxRuns = arg.runs;
499
9
        }
500
9
      }, agg);
501
36
    }
502
12
503
12
    // loop over all incoming data, calling each aggregate each time
504
36
    for (int run = 1;run <= maxRuns;
run++24
) {
505
72
      for (auto& agg : me.aggregates) {
506
72
        std::visit([&run](auto&& arg) {
507
72
          arg.beginRun(run);
508
72
        }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMean@123@@Z
Line
Count
Source
506
2
        std::visit([&run](auto&& arg) {
507
2
          arg.beginRun(run);
508
2
        }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
506
2
        std::visit([&run](auto&& arg) {
507
2
          arg.beginRun(run);
508
2
        }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
506
2
        std::visit([&run](auto&& arg) {
507
2
          arg.beginRun(run);
508
2
        }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMean@123@@Z
Line
Count
Source
506
4
        std::visit([&run](auto&& arg) {
507
4
          arg.beginRun(run);
508
4
        }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
506
4
        std::visit([&run](auto&& arg) {
507
4
          arg.beginRun(run);
508
4
        }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
506
4
        std::visit([&run](auto&& arg) {
507
4
          arg.beginRun(run);
508
4
        }, agg);
??$?RAEAUCount@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUCount@123@@Z
Line
Count
Source
506
18
        std::visit([&run](auto&& arg) {
507
18
          arg.beginRun(run);
508
18
        }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
506
18
        std::visit([&run](auto&& arg) {
507
18
          arg.beginRun(run);
508
18
        }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_2>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
506
18
        std::visit([&run](auto&& arg) {
507
18
          arg.beginRun(run);
508
18
        }, agg);
509
72
      }
510
24
511
66
      for (auto& v : from) {
512
198
        for (auto& agg : me.aggregates) {
513
198
          std::visit([&v](auto&& arg) {
514
198
            arg.map(v);
515
198
          }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMean@123@@Z
Line
Count
Source
513
8
          std::visit([&v](auto&& arg) {
514
8
            arg.map(v);
515
8
          }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
513
8
          std::visit([&v](auto&& arg) {
514
8
            arg.map(v);
515
8
          }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
513
8
          std::visit([&v](auto&& arg) {
514
8
            arg.map(v);
515
8
          }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMean@123@@Z
Line
Count
Source
513
12
          std::visit([&v](auto&& arg) {
514
12
            arg.map(v);
515
12
          }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
513
12
          std::visit([&v](auto&& arg) {
514
12
            arg.map(v);
515
12
          }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
513
12
          std::visit([&v](auto&& arg) {
514
12
            arg.map(v);
515
12
          }, agg);
??$?RAEAUCount@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUCount@123@@Z
Line
Count
Source
513
46
          std::visit([&v](auto&& arg) {
514
46
            arg.map(v);
515
46
          }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUMode@123@@Z
Line
Count
Source
513
46
          std::visit([&v](auto&& arg) {
514
46
            arg.map(v);
515
46
          }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_3>@?0???$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@123@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@23@U4123@@Z@QEBA?A?<auto>@@AEAUVariance@123@@Z
Line
Count
Source
513
46
          std::visit([&v](auto&& arg) {
514
46
            arg.map(v);
515
46
          }, agg);
516
198
        }
517
66
      }
518
24
    }
519
12
520
12
    // return me so we can then do get<Agg>()
521
12
    return me;
522
12
  }
??$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@012@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@12@U3012@@Z
Line
Count
Source
492
1
  friend auto operator|(herald::analysis::views::view<ValT>& from, summarise<Aggs...> me) -> summarise<Aggs...> {
493
1
    // determine number of runs
494
1
    int maxRuns = 1;
495
3
    for (auto& agg : me.aggregates) {
496
3
      std::visit([&maxRuns](auto&& arg) {
497
3
        if (arg.runs > maxRuns) {
498
3
          maxRuns = arg.runs;
499
3
        }
500
3
      }, agg);
501
3
    }
502
1
503
1
    // loop over all incoming data, calling each aggregate each time
504
3
    for (int run = 1;run <= maxRuns;
run++2
) {
505
6
      for (auto& agg : me.aggregates) {
506
6
        std::visit([&run](auto&& arg) {
507
6
          arg.beginRun(run);
508
6
        }, agg);
509
6
      }
510
2
511
8
      for (auto& v : from) {
512
24
        for (auto& agg : me.aggregates) {
513
24
          std::visit([&v](auto&& arg) {
514
24
            arg.map(v);
515
24
          }, agg);
516
24
        }
517
8
      }
518
2
    }
519
1
520
1
    // return me so we can then do get<Agg>()
521
1
    return me;
522
1
  }
??$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@012@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$dual_filter@Usince@views@analysis@herald@@U?$in_range@H@234@@views@analysis@herald@@U?$less_than@H@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BE@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@12@U3012@@Z
Line
Count
Source
492
2
  friend auto operator|(herald::analysis::views::view<ValT>& from, summarise<Aggs...> me) -> summarise<Aggs...> {
493
2
    // determine number of runs
494
2
    int maxRuns = 1;
495
6
    for (auto& agg : me.aggregates) {
496
6
      std::visit([&maxRuns](auto&& arg) {
497
6
        if (arg.runs > maxRuns) {
498
6
          maxRuns = arg.runs;
499
6
        }
500
6
      }, agg);
501
6
    }
502
2
503
2
    // loop over all incoming data, calling each aggregate each time
504
6
    for (int run = 1;run <= maxRuns;
run++4
) {
505
12
      for (auto& agg : me.aggregates) {
506
12
        std::visit([&run](auto&& arg) {
507
12
          arg.beginRun(run);
508
12
        }, agg);
509
12
      }
510
4
511
12
      for (auto& v : from) {
512
36
        for (auto& agg : me.aggregates) {
513
36
          std::visit([&v](auto&& arg) {
514
36
            arg.map(v);
515
36
          }, agg);
516
36
        }
517
12
      }
518
4
    }
519
2
520
2
    // return me so we can then do get<Agg>()
521
2
    return me;
522
2
  }
??$?UU?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@@aggregates@analysis@herald@@YA?AU?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@012@AEAU?$view@U?$filtered_iterator_proxy@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$dual_filter@U?$in_range@H@views@analysis@herald@@Usince@234@@views@34@U?$Sample@VRSSI@datatype@herald@@@234@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@234@_K@views@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@sampling@34@U?$SampleIterator@U?$SampleList@U?$Sample@VRSSI@datatype@herald@@@sampling@analysis@herald@@$0BJ@VRSSI@datatype@4@@sampling@analysis@herald@@U?$Sample@VRSSI@datatype@herald@@@234@@634@_K@views@12@U3012@@Z
Line
Count
Source
492
9
  friend auto operator|(herald::analysis::views::view<ValT>& from, summarise<Aggs...> me) -> summarise<Aggs...> {
493
9
    // determine number of runs
494
9
    int maxRuns = 1;
495
27
    for (auto& agg : me.aggregates) {
496
27
      std::visit([&maxRuns](auto&& arg) {
497
27
        if (arg.runs > maxRuns) {
498
27
          maxRuns = arg.runs;
499
27
        }
500
27
      }, agg);
501
27
    }
502
9
503
9
    // loop over all incoming data, calling each aggregate each time
504
27
    for (int run = 1;run <= maxRuns;
run++18
) {
505
54
      for (auto& agg : me.aggregates) {
506
54
        std::visit([&run](auto&& arg) {
507
54
          arg.beginRun(run);
508
54
        }, agg);
509
54
      }
510
18
511
46
      for (auto& v : from) {
512
138
        for (auto& agg : me.aggregates) {
513
138
          std::visit([&v](auto&& arg) {
514
138
            arg.map(v);
515
138
          }, agg);
516
138
        }
517
46
      }
518
18
    }
519
9
520
9
    // return me so we can then do get<Agg>()
521
9
    return me;
522
9
  }
523
524
  template <typename Agg>
525
34
  double get() {
526
34
    double result = 0.0;
527
102
    for (auto& agg : aggregates) {
528
102
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
529
102
      std::visit([&result](auto&& arg) {
530
102
        using T = std::decay_t<decltype(arg)>;
531
102
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
34
          result = arg.reduce();
533
34
        }
534
102
      }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMean@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMean@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) {
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMean@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMode@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMean@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUVariance@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMode@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMean@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMode@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMode@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) {
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMode@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUVariance@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUMean@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UVariance@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMean@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UVariance@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMode@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UVariance@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUVariance@234@@Z
Line
Count
Source
529
3
      std::visit([&result](auto&& arg) {
530
3
        using T = std::decay_t<decltype(arg)>;
531
3
        if constexpr (std::is_same_v<Agg,T>) {
532
3
          result = arg.reduce();
533
3
        }
534
3
      }, agg);
??$?RAEAUCount@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UCount@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUCount@234@@Z
Line
Count
Source
529
9
      std::visit([&result](auto&& arg) {
530
9
        using T = std::decay_t<decltype(arg)>;
531
9
        if constexpr (std::is_same_v<Agg,T>) {
532
9
          result = arg.reduce();
533
9
        }
534
9
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UCount@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMode@234@@Z
Line
Count
Source
529
9
      std::visit([&result](auto&& arg) {
530
9
        using T = std::decay_t<decltype(arg)>;
531
9
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
9
          result = arg.reduce();
533
9
        }
534
9
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UCount@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUVariance@234@@Z
Line
Count
Source
529
9
      std::visit([&result](auto&& arg) {
530
9
        using T = std::decay_t<decltype(arg)>;
531
9
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
9
          result = arg.reduce();
533
9
        }
534
9
      }, agg);
??$?RAEAUCount@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMode@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUCount@234@@Z
Line
Count
Source
529
8
      std::visit([&result](auto&& arg) {
530
8
        using T = std::decay_t<decltype(arg)>;
531
8
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
8
          result = arg.reduce();
533
8
        }
534
8
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMode@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMode@234@@Z
Line
Count
Source
529
8
      std::visit([&result](auto&& arg) {
530
8
        using T = std::decay_t<decltype(arg)>;
531
8
        if constexpr (std::is_same_v<Agg,T>) {
532
8
          result = arg.reduce();
533
8
        }
534
8
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UMode@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUVariance@234@@Z
Line
Count
Source
529
8
      std::visit([&result](auto&& arg) {
530
8
        using T = std::decay_t<decltype(arg)>;
531
8
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
8
          result = arg.reduce();
533
8
        }
534
8
      }, agg);
??$?RAEAUCount@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UVariance@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUCount@234@@Z
Line
Count
Source
529
8
      std::visit([&result](auto&& arg) {
530
8
        using T = std::decay_t<decltype(arg)>;
531
8
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
8
          result = arg.reduce();
533
8
        }
534
8
      }, agg);
??$?RAEAUMode@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UVariance@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUMode@234@@Z
Line
Count
Source
529
8
      std::visit([&result](auto&& arg) {
530
8
        using T = std::decay_t<decltype(arg)>;
531
8
        if constexpr (std::is_same_v<Agg,T>) 
{0
532
8
          result = arg.reduce();
533
8
        }
534
8
      }, agg);
??$?RAEAUVariance@aggregates@analysis@herald@@@<lambda_1>@?0???$get@UVariance@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ@QEBA?A?<auto>@@AEAUVariance@234@@Z
Line
Count
Source
529
8
      std::visit([&result](auto&& arg) {
530
8
        using T = std::decay_t<decltype(arg)>;
531
8
        if constexpr (std::is_same_v<Agg,T>) {
532
8
          result = arg.reduce();
533
8
        }
534
8
      }, agg);
535
102
    }
536
34
    return result;
537
34
  }
??$get@UMean@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ
Line
Count
Source
525
3
  double get() {
526
3
    double result = 0.0;
527
9
    for (auto& agg : aggregates) {
528
9
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
529
9
      std::visit([&result](auto&& arg) {
530
9
        using T = std::decay_t<decltype(arg)>;
531
9
        if constexpr (std::is_same_v<Agg,T>) {
532
9
          result = arg.reduce();
533
9
        }
534
9
      }, agg);
535
9
    }
536
3
    return result;
537
3
  }
??$get@UMode@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ
Line
Count
Source
525
3
  double get() {
526
3
    double result = 0.0;
527
9
    for (auto& agg : aggregates) {
528
9
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
529
9
      std::visit([&result](auto&& arg) {
530
9
        using T = std::decay_t<decltype(arg)>;
531
9
        if constexpr (std::is_same_v<Agg,T>) {
532
9
          result = arg.reduce();
533
9
        }
534
9
      }, agg);
535
9
    }
536
3
    return result;
537
3
  }
??$get@UVariance@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ
Line
Count
Source
525
3
  double get() {
526
3
    double result = 0.0;
527
9
    for (auto& agg : aggregates) {
528
9
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
529
9
      std::visit([&result](auto&& arg) {
530
9
        using T = std::decay_t<decltype(arg)>;
531
9
        if constexpr (std::is_same_v<Agg,T>) {
532
9
          result = arg.reduce();
533
9
        }
534
9
      }, agg);
535
9
    }
536
3
    return result;
537
3
  }
??$get@UCount@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ
Line
Count
Source
525
9
  double get() {
526
9
    double result = 0.0;
527
27
    for (auto& agg : aggregates) {
528
27
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
529
27
      std::visit([&result](auto&& arg) {
530
27
        using T = std::decay_t<decltype(arg)>;
531
27
        if constexpr (std::is_same_v<Agg,T>) {
532
27
          result = arg.reduce();
533
27
        }
534
27
      }, agg);
535
27
    }
536
9
    return result;
537
9
  }
??$get@UMode@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ
Line
Count
Source
525
8
  double get() {
526
8
    double result = 0.0;
527
24
    for (auto& agg : aggregates) {
528
24
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
529
24
      std::visit([&result](auto&& arg) {
530
24
        using T = std::decay_t<decltype(arg)>;
531
24
        if constexpr (std::is_same_v<Agg,T>) {
532
24
          result = arg.reduce();
533
24
        }
534
24
      }, agg);
535
24
    }
536
8
    return result;
537
8
  }
??$get@UVariance@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@QEAANXZ
Line
Count
Source
525
8
  double get() {
526
8
    double result = 0.0;
527
24
    for (auto& agg : aggregates) {
528
24
      // See https://en.cppreference.com/w/cpp/utility/variant/visit
529
24
      std::visit([&result](auto&& arg) {
530
24
        using T = std::decay_t<decltype(arg)>;
531
24
        if constexpr (std::is_same_v<Agg,T>) {
532
24
          result = arg.reduce();
533
24
        }
534
24
      }, agg);
535
24
    }
536
8
    return result;
537
8
  }
538
539
private:
540
  std::vector<std::variant<Aggs...>> aggregates;
541
542
  template <typename Last>
543
12
  void addAggregate() {
544
12
    aggregates.emplace_back(Last());
545
12
  }
??$addAggregate@UVariance@aggregates@analysis@herald@@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@AEAAXXZ
Line
Count
Source
543
3
  void addAggregate() {
544
3
    aggregates.emplace_back(Last());
545
3
  }
??$addAggregate@UVariance@aggregates@analysis@herald@@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@AEAAXXZ
Line
Count
Source
543
9
  void addAggregate() {
544
9
    aggregates.emplace_back(Last());
545
9
  }
546
547
  template <typename First, typename Second, typename... Remaining>
548
24
  void addAggregate() {
549
24
    aggregates.emplace_back(First());
550
24
    addAggregate<Second, Remaining...>();
551
24
  }
??$addAggregate@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@AEAAXXZ
Line
Count
Source
548
3
  void addAggregate() {
549
3
    aggregates.emplace_back(First());
550
3
    addAggregate<Second, Remaining...>();
551
3
  }
??$addAggregate@UMode@aggregates@analysis@herald@@UVariance@234@$$V@?$summarise@UMean@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@AEAAXXZ
Line
Count
Source
548
3
  void addAggregate() {
549
3
    aggregates.emplace_back(First());
550
3
    addAggregate<Second, Remaining...>();
551
3
  }
??$addAggregate@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@AEAAXXZ
Line
Count
Source
548
9
  void addAggregate() {
549
9
    aggregates.emplace_back(First());
550
9
    addAggregate<Second, Remaining...>();
551
9
  }
??$addAggregate@UMode@aggregates@analysis@herald@@UVariance@234@$$V@?$summarise@UCount@aggregates@analysis@herald@@UMode@234@UVariance@234@@aggregates@analysis@herald@@AEAAXXZ
Line
Count
Source
548
9
  void addAggregate() {
549
9
    aggregates.emplace_back(First());
550
9
    addAggregate<Second, Remaining...>();
551
9
  }
552
};
553
554
555
} // end namespace aggregates
556
}
557
}
558
559
#endif